//
// Created by Tiany on 2021/6/21.
//顺序存储型栈的功能的实现

#include "SeqStack.h"
#include "stdio.h"
#include "stdlib.h"

//创建空栈
PSeqStack createEmptyStack_seq(int m) {
    PSeqStack pSeqStack = malloc(sizeof(struct SeqStack));
    if (pSeqStack != NULL) {
        pSeqStack->s = malloc(sizeof(struct DataType) * m);
        if (pSeqStack->s) {
            pSeqStack->MAXNUM = m;
            pSeqStack->t = -1;
            return pSeqStack;
        } else free(pSeqStack);
    }
    printf("空间分配失败");
    return NULL;
}

//判断栈是否为空
int isEmptyStack_seq(PSeqStack pSeqStack) {
    return (pSeqStack->t == -1);/*空栈返回1*/
}

//进栈
void push_seq(PSeqStack pSeqStack, struct DataType x) {
    if (pSeqStack->t >= pSeqStack->MAXNUM - 1)
        printf("栈已经满了");
    else {
        pSeqStack->t++;
        pSeqStack->s[pSeqStack->t] = x;
    }
}

//出栈
void pop_seq(PSeqStack pSeqStack) {
    if (pSeqStack->t == -1) {
        printf("栈为空");
    } else pSeqStack->t--;/*只是栈顶下移，元素还在，下次入栈就会覆盖*/
}

//取栈顶元素
struct DataType top_seq(PSeqStack pSeqStack) {
    if (isEmptyStack_seq(pSeqStack)) {
        printf("栈为空");
    } else{
        return (pSeqStack->s[pSeqStack->t]);
    }


}

